// 版权所有2012 Go作者。版权所有。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package sync

import "unsafe"

// 在包运行时中定义

// Semacquire等待到*s>0，然后按原子顺序递减。
// 它是一个简单的睡眠原语，供同步
// 库使用，不应直接使用。
func runtime_Semacquire(s *uint32)

// SemacquireMutex类似于Semacquire，但用于分析竞争互斥体。
// 如果后进先出是真的，请将服务员排在等待队列的最前面。
// skipframes是跟踪期间要忽略的帧数，从
// runtime_SemacquireMutex的调用者开始计算。
func runtime_SemacquireMutex(s *uint32, lifo bool, skipframes int)

// Semrelease以原子方式递增*s并通知等待的goroutine 
// 如果一个goroutine在Semacquire中被阻止。
// 它是一个简单的唤醒原语，供同步
// 库使用，不应直接使用。
// 如果交接为真，则直接将计数传递给第一个服务员。
// skipframes是跟踪期间要忽略的帧数，从
// runtime_Semrelease的调用方开始计算。
func runtime_Semrelease(s *uint32, handoff bool, skipframes int)

// 有关文档，请参阅runtime/sema.go。
func runtime_notifyListAdd(l *notifyList) uint32

// 有关文档，请参阅runtime/sema.go。
func runtime_notifyListWait(l *notifyList, t uint32)

// 有关文档，请参阅runtime/sema.go。
func runtime_notifyListNotifyAll(l *notifyList)

// 有关文档，请参阅runtime/sema.go。
func runtime_notifyListNotifyOne(l *notifyList)

// 确保同步和运行时在notifyList的大小上一致。
func runtime_notifyListCheck(size uintptr)
func init() {
	var n notifyList
	runtime_notifyListCheck(unsafe.Sizeof(n))
}

// 活动旋转运行时支持。
// runtime\u canSpin报告当前旋转是否有意义。
func runtime_canSpin(i int) bool

// 运行时doSpin进行主动旋转。
func runtime_doSpin()

func runtime_nanotime() int64
